package qualomelhor.gwt.modules.client;

import com.google.appengine.api.datastore.Blob;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
import java.util.ArrayList;
import java.util.HashMap;
import qualomelhor.database.Avatar;
import qualomelhor.database.BuscaComparacao;
import qualomelhor.database.Categoria;
import qualomelhor.database.Comparacao;
import qualomelhor.database.Comparacao.TipoComparacao;
import qualomelhor.database.ExpressaoDB;
import qualomelhor.database.LinkCategoria_Produto;
import qualomelhor.database.LinkComparacao;
import qualomelhor.database.ParteAvatar;
import qualomelhor.database.PathComparacao;
import qualomelhor.database.PosicaoMaosDB;
import qualomelhor.database.Produto;
import qualomelhor.database.ParametrosSistema.SiteHost;
import qualomelhor.database.SequenciaExpressaoDB;
import qualomelhor.database.TermoIdioma;
import qualomelhor.database.Usuario;

@RemoteServiceRelativePath("./iSessionSuport")
public interface ISessionSuportService extends RemoteService {

	ArrayList<Categoria> getListCategorias(boolean recarregar);

	ArrayList<Produto> getListProdutos(boolean recarregar);

	ArrayList<Comparacao> getListComparacao(boolean recarregar);

	ArrayList<ParteAvatar> getListParteAvatar(boolean recarregar);

	ArrayList<TermoIdioma> getListTermoIdioma(int offset, int limit, boolean orderByLocaleFirst, boolean somenteSemTraducao);

	Boolean deletaCategoria(Long idCategoria);

	Boolean deletaProduto(Long idProduto);

	Boolean deletaBusca(Long idProd, String busca);

	Boolean deletaLocaleCategoria(Long idCategoria, String locale);

	Boolean addBusca(Long idProduto, String busca);

	Boolean addLocaleCategoria(Long idCategoria, String locale, String nomeTraduzido);

	Boolean deletaComparacao(Long idComparacao);

	Boolean deletaPathComparacao(Long idComp, SiteHost site);

	Boolean deletaPosicaoMaoDB(String nome);

	Boolean deletaTodasExpressoesDB();

	Boolean deletaTodasPosicoesMaosDB();

	Boolean deletaExpressaoDB(String nome);

	Comparacao addPathComparacao(Long idComparacao, String path, SiteHost site, String complementoPergunta);

	Boolean deletaParteAvatar(Long idParte);

	Boolean deletaTermoIdioma(Long id);

	Boolean gravaCategoria(Long idCategoria, String nomeCategoria, boolean translate, Long idCategoriaPai, String enderecoFotoCategoria, String enderecoIcon, int ordem, boolean bloqueado, HashMap<String, String> mapLocale_Name);

	Boolean gravaProduto(Long id, String nomeProduto, Long idCategoria, String descricao, String enderecoFotoMini, ArrayList<String> listEnderecoFoto, ArrayList<Blob> listImagesBlob, boolean bloqueado);
	
	Boolean gravaProdutoMerge(Produto pNovo, Long pAnt1, Long pAnt2);

	Comparacao gravaComparacao(Long id, TipoComparacao tipoComparacao, ArrayList<Long> listProdutoComp, ArrayList<PathComparacao> listPathComparacao, SiteHost site, String locale, Avatar av);

	Boolean gravaParteAvatar(Long id, String nomeArquivo, int tipoParteCorpo);

	Comparacao gravaComparacao1Coisa(Long idUsuario, String nomeProduto, ArrayList<String> listEnderecoFoto, ArrayList<Blob> listImagesBlob,SiteHost site, String locale, String complementoPergunta);

	Comparacao gravaComparacao2Coisas(Long idUsuario, String nomeProduto1, String nomeProduto2, ArrayList<String> listEnderecoFotoProd1, ArrayList<String> listDataUrlImagesProd1, ArrayList<String> listEnderecoFotoProd2, ArrayList<String> listDataUrlImagesProd2, SiteHost site, String locale, String complementoPergunta, Avatar av);

	Boolean gravaPosicaoMao(PosicaoMaosDB pMaoDB);

	Boolean gravaMatrExpressao(ArrayList<ExpressaoDB> listExprDB);

	Boolean gravaExpressao(ExpressaoDB exprDB);

	Boolean gravaSequenciaExpressao(SequenciaExpressaoDB seqExprDB);

	int gravaVoto(Long idComparacao, Long idUsuario, Long idProduto, String coment);

	int gravaRespostaComentario(Long idComparacao, int idVoto, String pathId, Long idUsuario, String coment);

	Boolean teste(boolean b);

	Boolean gravaVotoComparacao(Long idComparacao);

	HashMap<String, Object> carregaSessaoAtual();

	String carregaLocaleAtual();

	Usuario carregaUsuarioAtual();

	PosicaoMaosDB carregaPosicaoMaoDB(String nome);

	ExpressaoDB carregaExpressaoDB(String nome);

	SequenciaExpressaoDB carregaSequenciaExpressaoDB(String nome);

	Boolean salvaLinkBlogComparacao(Long idComparacao, Long idUsuarioLink, String nomeBlog, String link);

	int alteraVoto(int idVoto, Long idComparacao, Long idUsuario, String coment);

	Boolean deletaVoto(int idVoto, Long idComparacao, Long idUsuario);

	Produto carregaProduto(Long idProduto);

	Boolean enviaEmail(String assunto, String nome, String email, String mensagem);

	Boolean gravaTermoIdioma(Long id, String nomeTermo, String locale, String traducao);

	ArrayList<LinkCategoria_Produto> carregaListLinkProduto(Long idProduto);

	ArrayList<LinkComparacao> carregaListLinkComparacao(Long idComparacao);

	ArrayList<BuscaComparacao> carregaListaBuscaComparacao(Long idProduto);

	ArrayList<BuscaComparacao> carregaListaBuscaComparacaoPorIdComparacao(Long idComparacao);

	Boolean salvaShareFBID(Long idComparacao, String idShare);
}